package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrp110a;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Scrm1300
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrm1300 {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Scrm1300.jsp";
	private String jVersaoj;
	private String dataCorrente;
	private String jFuncaoj;
	private String horaCorrente;
	private String jChave;
	private int jAlarm;
	private String jAltura;
	private String jEstadoCivil;
	private String jCutis;
	private String jCorCabelo;
	private String jTipoCabelo;
	private String jCorOlhos;
	private String jSinais;
	private String jCompleicao;
	private String jNomeVitima;
	private String jMotivo;
	private String jconf;
	private int jOcorrencia;
	private String jEmpresaj;
	private String jProgramaj;
	private String[] jObservacoes = new String[5];
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "jaltura";
	private String navegar = "";
	public Boolean temMensagem = false;
	private Result result;
	private Sessao sessao;

	// Classes views
	// Classes includes

	public Scrm1300() {
		inicializar(false);
	}

	public Scrm1300(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			jconf = "";
			jVersaoj = "";
			dataCorrente = "";
			jFuncaoj = "";
			jChave = "";
			jAlarm = 0;
			jAltura = "";
			jEstadoCivil = "";
			jCutis = "";
			jCorCabelo = "";
			jTipoCabelo = "";
			jCorOlhos = "";
			jSinais = "";
			jCompleicao = "";
			jNomeVitima = "";
			jMotivo = "";
			jOcorrencia = 0;
			Arrays.fill(jObservacoes, "");
			jEmpresaj = "";
			jProgramaj = "";
			jEmpresaj = sessao.getScrg001().getWEmpresaw();
			jFuncaoj = sessao.getScrg001().getWFuncaow();
			jProgramaj = sessao.getScrg001().getWProgramaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
		}
		dataCorrente = new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()); // *DATE
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarFuncao();
		if (temMensagem) {
			return false;
		}
		ValidarWaltura();
		if (temMensagem) {
			return false;
		}
		ValidarWestadoCivil();
		if (temMensagem) {
			return false;
		}
		ValidarWcutis();
		if (temMensagem) {
			return false;
		}
		ValidarWcorCabelo();
		if (temMensagem) {
			return false;
		}
		ValidarWtipoCabelo();
		if (temMensagem) {
			return false;
		}
		ValidarWcorOlhos();
		if (temMensagem) {
			return false;
		}
		ValidarWsinais();
		if (temMensagem) {
			return false;
		}
		ValidarWcompleicao();
		if (temMensagem) {
			return false;
		}
		ValidarWnomeVitima();
		if (temMensagem) {
			return false;
		}
		ValidarWmotivo();
		if (temMensagem) {
			return false;
		}
		ValidarWobservacoes();
		if (temMensagem) {
			return false;
		}

		sessao.getScrg001().setWEmpresaw(this.jEmpresaj);
		sessao.getScrg001().setWFuncaow(this.jFuncaoj);
		sessao.getScrg001().setWProgramaw(this.jProgramaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	private void ValidarFuncao() {
		// Consist�ncia F00funcao
		if (!((UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_processa)))) {
			enviarMensagem(null, "Tecla invalida");
			return;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			// dao.rollback();
			Scrp110a scrp110a = new Scrp110a(result, sessao);
			scrp110a.executar(null, null, null, null, null, null);
		}
	}

	private void ValidarWaltura() {
		// Consist�ncia F00#ALTURA
		if (!((jAltura.equals("0") || jAltura.equals("1") || jAltura.equals("2") || jAltura.equals("3") || jAltura.equals("4") || jAltura.equals("5")))) {
			enviarMensagem("jaltura", "Selecione a altura");
			return;
		}
	}

	private void ValidarWestadoCivil() {
		// Consist�ncia F00#ESTADO-CIVIL
		if (!((jEstadoCivil.equals("0") || jEstadoCivil.equals("1") || jEstadoCivil.equals("2") || jEstadoCivil.equals("3") || jEstadoCivil.equals("4") || jEstadoCivil.equals("5")))) {
			enviarMensagem("jestadocivil", "Selecione o estado civil");
			return;
		}
	}

	private void ValidarWcutis() {
		// Consist�ncia F00#CUTIS
		if (!((jCutis.equals("0") || jCutis.equals("1") || jCutis.equals("2") || jCutis.equals("3") || jCutis.equals("4") || jCutis.equals("5")))) {
			enviarMensagem("jcutis", "Selecione a cutis");
			return;
		}
	}

	private void ValidarWcorCabelo() {
		// Consist�ncia F00#COR-CABELO
		if (!((jCorCabelo.equals("0") || jCorCabelo.equals("1") || jCorCabelo.equals("2") || jCorCabelo.equals("3") || jCorCabelo.equals("4") || jCorCabelo.equals("5") || jCorCabelo.equals("6")))) {
			enviarMensagem("jcorcabelo", "Selecione a cor do cabelo");
			return;
		}
	}

	private void ValidarWtipoCabelo() {
		// Consist�ncia F00#TIPO-CABELO
		if (!((jTipoCabelo.equals("0") || jTipoCabelo.equals("1") || jTipoCabelo.equals("2") || jTipoCabelo.equals("3") || jTipoCabelo.equals("4") || jTipoCabelo.equals("5") || jTipoCabelo.equals("6")))) {
			enviarMensagem("jtipocabelo", "Selecione o tipo do cabelo");
			return;
		}
	}

	private void ValidarWcorOlhos() {
		// Consist�ncia F00#COR-OLHOS
		if (!(Integer.parseInt(jCorOlhos) >= 0 && Integer.parseInt(jCorOlhos) <= 6)) {
			enviarMensagem("jcorolhos", "Selecione a cor dos olhos");
			return;
		}
	}

	private void ValidarWsinais() {
		// Consist�ncia F00#SINAIS
		String wSina;
		String wChave;
		int wIndex;
		if (!(jSinais.trim().equals("*") || jSinais.trim().equals("************"))) {
			if (jSinais.trim().equals("")) {
				enviarMensagem("jsinais", "Se nao houver, informe 1 asterisco");
				return;
			}
			wSina = jSinais;
			if (UtilBean.subStr(wSina, 0, 1).equals("*")) {
				if (!UtilBean.subStr(wSina, 1, 59).trim().equals("")) {
					enviarMensagem("jsinais", "Informe somente 1 asterisco");
					return;
				}
			} else {
				if (UtilBean.subStr(wSina, 0, 1).equals("%") || UtilBean.subStr(wSina, 0, 1).trim().equals("") || UtilBean.subStr(wSina, 0, 1).equals("^")) {
					enviarMensagem("jsinais", "Se nao houver, informe 1 asterisco");
					return;
				}
			}
		}
	}

	private void ValidarWcompleicao() {
		// Consist�ncia F00#COMPLEICAO
		if (!((jCompleicao.equals("0") || jCompleicao.equals("1") || jCompleicao.equals("2") || jCompleicao.equals("3") || jCompleicao.equals("4") || jCompleicao.equals("5")))) {
			enviarMensagem("jcompleicao", "Selecione a complei��o");
			return;
		}
	}

	private void ValidarWnomeVitima() {
		// Consist�ncia F00#NOME-VITIMA
		String wVitima;
		if (!(jNomeVitima.trim().equals("*") || jNomeVitima.trim().equals("************"))) {
			if (jNomeVitima.trim().equals("")) {
				enviarMensagem("jnomevitima", "Se nao houver, informe 1 asterisco");
				return;
			}
			wVitima = jNomeVitima;
			if (UtilBean.subStr(wVitima, 0, 1).equals("*")) {
				if (!UtilBean.subStr(wVitima, 1, 59).trim().equals("")) {
					enviarMensagem("jnomevitima", "Informe somente 1 asterisco");
					return;
				}
			} else {
				if (UtilBean.subStr(wVitima, 0, 1).trim().equals("") || UtilBean.subStr(wVitima, 0, 1).equals("&") || UtilBean.subStr(wVitima, 0, 1).equals("#")) {
					enviarMensagem("jnomevitima", "Se nao houver, informe 1 asterisco");
					return;
				}
			}
		}
	}

	private void ValidarWmotivo() {
		// Consist�ncia F00#MOTIVO
	}

	// IF & = " "
	// REINPUT "Campo de preenchimento obrigatorio" MARK *& ALARM
	private void ValidarWobservacoes() {
		// Consist�ncia F00#OBSERVACOES
		int wX;
		int wY;
		int wW;
		for (wX = 4; wX >= 2; wX += -1) {
			if (!jObservacoes[wX].trim().equals("")) {
				wW = wX;
				for (wY = wW; wY >= 1; wY += -1) {
					if (jObservacoes[wY].trim().equals("")) {
						enviarMensagem(null, "Existe espaco nas linhas acima das que voce informou");
						return;
					}
				}
			}
		}
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getJfuncaoj() {
		return jFuncaoj;
	}

	public void setJfuncaoj(String jFuncaoj) {
		this.jFuncaoj = jFuncaoj;
	}

	public String getJchave() {
		return jChave;
	}

	public void setJchave(String jChave) {
		this.jChave = jChave;
	}

	public int getJalarm() {
		return jAlarm;
	}

	public void setJalarm(int jAlarm) {
		this.jAlarm = jAlarm;
	}

	public String getJaltura() {
		return jAltura;
	}

	public void setJaltura(String jAltura) {
		this.jAltura = jAltura;
	}

	public String getJestadocivil() {
		return jEstadoCivil;
	}

	public void setJestadocivil(String jEstadoCivil) {
		this.jEstadoCivil = jEstadoCivil;
	}

	public String getJcutis() {
		return jCutis;
	}

	public void setJcutis(String jCutis) {
		this.jCutis = jCutis;
	}

	public String getJcorcabelo() {
		return jCorCabelo;
	}

	public void setJcorcabelo(String jCorCabelo) {
		this.jCorCabelo = jCorCabelo;
	}

	public String getJtipocabelo() {
		return jTipoCabelo;
	}

	public void setJtipocabelo(String jTipoCabelo) {
		this.jTipoCabelo = jTipoCabelo;
	}

	public String getJcorolhos() {
		return jCorOlhos;
	}

	public void setJcorolhos(String jCorOlhos) {
		this.jCorOlhos = jCorOlhos;
	}

	public String getJsinais() {
		return jSinais;
	}

	public void setJsinais(String jSinais) {
		this.jSinais = jSinais;
	}

	public String getJcompleicao() {
		return jCompleicao;
	}

	public void setJcompleicao(String jCompleicao) {
		this.jCompleicao = jCompleicao;
	}

	public String getJnomevitima() {
		return jNomeVitima;
	}

	public void setJnomevitima(String jNomeVitima) {
		this.jNomeVitima = jNomeVitima;
	}

	public String getJmotivo() {
		return jMotivo;
	}

	public void setJmotivo(String jMotivo) {
		this.jMotivo = jMotivo;
	}

	public int getJocorrencia() {
		return jOcorrencia;
	}

	public void setJocorrencia(int jOcorrencia) {
		this.jOcorrencia = jOcorrencia;
	}

	public String getJempresaj() {
		return jEmpresaj;
	}

	public void setJempresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public String getJprogramaj() {
		return jProgramaj;
	}

	public void setJprogramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public String[] getJobservacoes() {
		return jObservacoes;
	}

	public void setJobservacoes(String[] jObservacoes) {
		this.jObservacoes = jObservacoes;
	}

	public String getJobservacoes(int index) {
		return jObservacoes[index];
	}

	public void setJobservacoes(int index, String jObservacoes) {
		this.jObservacoes[index] = jObservacoes;
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}

	public String getJconf() {
		return jconf;
	}

	public void setJconf(String jconf) {
		this.jconf = jconf;
	}

}
